set cut_paste_input [stack 0]
version 12.2 v7
push $cut_paste_input
Group {
name ImagePlane3D4
knobChanged "n = nuke.thisNode()\nk = nuke.thisKnob()\n\nif k.name() == 'inputChange':\n n\['distanceAxis'].setVisible(n\[\"isOn\"].value())\n n.knob('distance').setVisible(not n\[\"isOn\"].value())\n \nif k.name() == 'result':\n result = n.knob('result').getValue()\n if result == 0:\n n.knob('samples').setVisible(True)\n n.knob('motionblur').setVisible(False)\n elif result == 1 or result == 2 or result == 3 :\n n.knob('samples').setVisible(False)\n n.knob('motionblur').setVisible(True)\n"
tile_color 0x3121a5ff
label "ref \[value refFrame] dis: \[value distance]\n"
note_font Verdana
note_font_color 0xffffffff
selected true
xpos -370
ypos -213
addUserKnob {20 imagePlane3D l ImagePlane3D}
addUserKnob {4 output l "<b><font color=skyblue>Output:" M {Stabilize Matchmove "" "" ""}}
output Matchmove
addUserKnob {4 result l Result: M {"3D Projection Setup" "Card3D Setup" "Live (Reconcile3D)" "Baked (Cornerpin)" "" "" "" "" "" "" ""}}
result "Baked (Cornerpin)"
addUserKnob {26 status l " Status:" T "<b> <font color=lime> Is Baked on Frames: 1001-1030"}
addUserKnob {3 refFrame l "Ref Frame"}
refFrame 1001
addUserKnob {22 setRefFrame l "Set Ref Frame" -STARTLINE T "n = nuke.thisNode()\nref = n.knob('refFrame')\nframe = nuke.frame()\n\nref.setValue(frame)"}
addUserKnob {7 distance l DistanceFromCam R 0 1000}
distance 1.1
addUserKnob {22 bakeFramerange l "<font color = lime>Bake FrameRange" T "import time\nimport threading\n\nn = nuke.thisNode()\n#Define this node\n\nstatus = n.knob(\"status\")\nresult = n.knob('result')\n\nr1 = nuke.toNode(\"Reconcile3DTL\")\nr2 = nuke.toNode(\"Reconcile3DTR\")\nr3 = nuke.toNode(\"Reconcile3DBL\")\nr4 = nuke.toNode(\"Reconcile3DBR\")\nrL = \[r1,r2,r3,r4]\n# Define reconcile3D nodes\n\n#bcg = n.knob(\"bakeColors\")\n\ncps = nuke.toNode(\"CornerPin2DBakedStabilize\")\ncpm = nuke.toNode(\"CornerPin2DBakedMatchmove\")\n# Define cornerpin node\n\nfirst_frame = int(nuke.Root()\['first_frame'].getValue())\nlast_frame = int(nuke.Root()\['last_frame'].getValue())\n# Grab first and last frame from root\n\np = nuke.Panel(\"Execute on FrameRange\")\np.addSingleLineInput('First Frame', first_frame)\np.addSingleLineInput('Last Frame', last_frame)\np.addSingleLineInput('Increment', 1)\nif p.show():\n# Create user input panel\n \n ff = int(p.value(\"First Frame\"))\n lf = int(p.value(\"Last Frame\"))\n i = int(p.value(\"Increment\"))\n # Define first, last, increment from user input panel\n \n #k = \"status\"\n l = \"<b> <font color=lime> Is Baked on Frames:\" + \" \" + str(ff) + \"-\" + str(lf)\n status.setValue(l)\n # Change status of node\n \n result.setValue(3)\n \n with n:\n r1\[\"calc_output\"].setValue(0)\n r2\[\"calc_output\"].setValue(0)\n r3\[\"calc_output\"].setValue(0)\n r4\[\"calc_output\"].setValue(0)\n # turn off live status of reconcile3Ds\n \n r1\[\"output\"].clearAnimated()\n r1\[\"outputxyz\"].clearAnimated()\n r2\[\"output\"].clearAnimated()\n r2\[\"outputxyz\"].clearAnimated()\n r3\[\"output\"].clearAnimated()\n r3\[\"outputxyz\"].clearAnimated()\n r4\[\"output\"].clearAnimated()\n r4\[\"outputxyz\"].clearAnimated()\n # Clear any data from all Reconcile3D nodes\n \n def execute(first,last,inc):\n runMe = True\n while runMe == True:\n nuke.execute(r1,first,last,inc) \n nuke.execute(r2,first,last,inc)\n nuke.execute(r3,first,last,inc)\n nuke.execute(r4,first,last,inc)\n stop_event.set()\n runMe = False\n print 'Reconcile3Ds done'\n break\n # Define Reconcile3D execution function\n \n global stop_event \n stop_event = threading.Event()\n threading.Thread(target=execute, kwargs=dict(first=ff,last=lf,inc=i) ).start() \n while not stop_event.is_set():\n time.sleep(0.1)\n # run Reconcile3Ds with threading\n \n cps\[\"from4\"].copyAnimations(r1\[\"output\"].animations())\n cps\[\"from3\"].copyAnimations(r2\[\"output\"].animations())\n cps\[\"from1\"].copyAnimations(r3\[\"output\"].animations())\n cps\[\"from2\"].copyAnimations(r4\[\"output\"].animations())\n \n cpm\[\"to4\"].copyAnimations(r1\[\"output\"].animations())\n cpm\[\"to3\"].copyAnimations(r2\[\"output\"].animations())\n cpm\[\"to1\"].copyAnimations(r3\[\"output\"].animations())\n cpm\[\"to2\"].copyAnimations(r4\[\"output\"].animations())\n # copy reconcile3D values over to cornerpins\n \n r1\[\"output\"].clearAnimated()\n r1\[\"outputxyz\"].clearAnimated()\n r2\[\"output\"].clearAnimated()\n r2\[\"outputxyz\"].clearAnimated()\n r3\[\"output\"].clearAnimated()\n r3\[\"outputxyz\"].clearAnimated()\n r4\[\"output\"].clearAnimated()\n r4\[\"outputxyz\"].clearAnimated()\n # clear animation from live reconcile3Ds\n \n r1\[\"calc_output\"].setValue(1)\n r2\[\"calc_output\"].setValue(1)\n r3\[\"calc_output\"].setValue(1)\n r4\[\"calc_output\"].setValue(1)\n # make reconcile3ds live again\n " +STARTLINE}
addUserKnob {22 clearBaked l "<font color = orangered>Clear Baked" -STARTLINE T "n = nuke.thisNode()\nw = n.width()\nh = n.height()\nresult = n.knob('result')\n\ncps = nuke.toNode(\"CornerPin2DBakedStabilize\")\ncpm = nuke.toNode(\"CornerPin2DBakedMatchmove\")\nstatus = n.knob(\"status\")\n\ncpsfrom1 = cps.knob(\"from1\")\ncpsfrom2 = cps.knob(\"from2\")\ncpsfrom3 = cps.knob(\"from3\")\ncpsfrom4 = cps.knob(\"from4\")\n\ncpmto1 = cpm.knob(\"to1\")\ncpmto2 = cpm.knob(\"to2\")\ncpmto3 = cpm.knob(\"to3\")\ncpmto4 = cpm.knob(\"to4\")\n\ncpsfrom1.clearAnimated()\ncpsfrom2.clearAnimated()\ncpsfrom3.clearAnimated()\ncpsfrom4.clearAnimated()\ncpmto1.clearAnimated()\ncpmto2.clearAnimated()\ncpmto3.clearAnimated()\ncpmto4.clearAnimated()\n\ncpsfrom1.setValue(0,0)\ncpsfrom1.setValue(0,1)\ncpsfrom2.setValue(w,0)\ncpsfrom2.setValue(0,1)\ncpsfrom3.setValue(w,0)\ncpsfrom3.setValue(h,1)\ncpsfrom4.setValue(0,0)\ncpsfrom4.setValue(h,1)\n\ncpmto1.setValue(0,0)\ncpmto1.setValue(0,1)\ncpmto2.setValue(w,0)\ncpmto2.setValue(0,1)\ncpmto3.setValue(w,0)\ncpmto3.setValue(h,1)\ncpmto4.setValue(0,0)\ncpmto4.setValue(h,1)\n\nstatus.setValue(\"<font color=salmon> Is NOT Baked\")\nresult.setValue(2)"}
addUserKnob {22 exportBakedTrack l "<font color = violet>Export Baked CornerPin" T "n = nuke.thisNode()\n\ncps = nuke.toNode(\"CornerPin2DBakedStabilize\")\ncpsName = str(n.name())\nrefFrame = int(n.knob(\"refFrame\").value())\ndist = n.knob(\"distance\").value()\n\ncpsfrom1 = cps.knob(\"from1\")\ncpsfrom2 = cps.knob(\"from2\")\ncpsfrom3 = cps.knob(\"from3\")\ncpsfrom4 = cps.knob(\"from4\")\n\nwith nuke.Root():\n posX = n.knob(\"xpos\").value()\n posY = n.knob(\"ypos\").value()\n nukescripts.clear_selection_recursive()\n cpn = nuke.createNode('CornerPin2D')\n cpn.setName(cpsName + \"_CnrPin\")\n cpn.knob('xpos').setValue(posX +100)\n cpn.knob('ypos').setValue(posY +70)\n cpn.autoplace()\n cpn.setInput(0, None)\n \n cpnto1 = cpn.knob('to1')\n cpnto2 = cpn.knob('to2')\n cpnto3 = cpn.knob('to3')\n cpnto4 = cpn.knob('to4')\n \n cpnfrom1 = cpn.knob('from1')\n cpnfrom2 = cpn.knob('from2')\n cpnfrom3 = cpn.knob('from3')\n cpnfrom4 = cpn.knob('from4')\n \n cpnfrom1.copyAnimations(cpsfrom1.animations())\n cpnfrom2.copyAnimations(cpsfrom2.animations())\n cpnfrom3.copyAnimations(cpsfrom3.animations())\n cpnfrom4.copyAnimations(cpsfrom4.animations())\n \n tab = nuke.Tab_Knob('settings', 'Settings')\n \n setCurrentFrameBtn = nuke.PyScript_Knob(\"setCurrentFrame\", \"Set to Current Frame\")\n setCurrentFrameBtn.setCommand('n = nuke.thisNode()\\nrefFrame = n.knob(\"refFrame\")\\nrefFrame.setValue(nuke.frame())\\nrefFrame = refFrame.getValue()\\noutput = n.knob(\"output\")\\nto1 = n.knob(\"to1\")\\nto2 = n.knob(\"to2\")\\nto3 = n.knob(\"to3\")\\nto4 = n.knob(\"to4\")\\nfrom1 = n.knob(\"from1\")\\nfrom2 = n.knob(\"from2\")\\nfrom3 = n.knob(\"from3\")\\nfrom4 = n.knob(\"from4\")\\nif output.getValue() == 0:\\n to1.setValue(from1.getValueAt(refFrame))\\n to2.setValue(from2.getValueAt(refFrame))\\n to3.setValue(from3.getValueAt(refFrame))\\n to4.setValue(from4.getValueAt(refFrame))\\nif output.getValue() == 1:\\n from1.setValue(to1.getValueAt(refFrame))\\n from2.setValue(to2.getValueAt(refFrame))\\n from3.setValue(to3.getValueAt(refFrame))\\n from4.setValue(to4.getValueAt(refFrame))')\n \n setFrameBtn = nuke.PyScript_Knob('setFrame', 'Set Frame')\n setFrameBtn.setCommand('n = nuke.thisNode()\\nrefFrame = n.knob(\\\"refFrame\\\").getValue()\\noutput = n.knob(\\\"output\\\")\\nto1 = n.knob(\\\"to1\\\")\\nto2 = n.knob(\\\"to2\\\")\\nto3 = n.knob(\\\"to3\\\")\\nto4 = n.knob(\\\"to4\\\")\\nfrom1 = n.knob(\\\"from1\\\")\\nfrom2 = n.knob(\\\"from2\\\")\\nfrom3 = n.knob(\\\"from3\\\")\\nfrom4 = n.knob(\\\"from4\\\")\\nif output.getValue() == 0:\\n to1.setValue(from1.getValueAt(refFrame))\\n to2.setValue(from2.getValueAt(refFrame))\\n to3.setValue(from3.getValueAt(refFrame))\\n to4.setValue(from4.getValueAt(refFrame))\\nif output.getValue() == 1:\\n from1.setValue(to1.getValueAt(refFrame))\\n from2.setValue(to2.getValueAt(refFrame))\\n from3.setValue(to3.getValueAt(refFrame))\\n from4.setValue(to4.getValueAt(refFrame))')\n \n StabBtn = nuke.PyScript_Knob(\"stabilize\", \"<font color=lime>Stabilize\")\n StabBtn.setFlag(nuke.STARTLINE)\n StabBtn.setCommand('n = nuke.thisNode()\\nstab = n.knob(\"stabilize\")\\nmatch = n.knob(\"matchmove\")\\noutput = n.knob(\"output\")\\nrefFrame = n.knob(\"refFrame\").getValue()\\nif output.getValue() == 1:\\n stab.setLabel(\"<font color=lime>Stabilize\")\\n match.setLabel(\"<font color=salmon>Matchmove\")\\n to1 = n.knob(\"to1\")\\n to2 = n.knob(\"to2\")\\n to3 = n.knob(\"to3\")\\n to4 = n.knob(\"to4\")\\n from1 = n.knob(\"from1\")\\n from2 = n.knob(\"from2\")\\n from3 = n.knob(\"from3\")\\n from4 = n.knob(\"from4\")\\n from1.copyAnimations(to1.animations())\\n from2.copyAnimations(to2.animations())\\n from3.copyAnimations(to3.animations())\\n from4.copyAnimations(to4.animations())\\n to1.clearAnimated()\\n to2.clearAnimated()\\n to3.clearAnimated()\\n to4.clearAnimated()\\n to1.setValue(from1.getValueAt(refFrame))\\n to2.setValue(from2.getValueAt(refFrame))\\n to3.setValue(from3.getValueAt(refFrame))\\n to4.setValue(from4.getValueAt(refFrame))\\n output.setValue(0)')\n \n MatchBtn = nuke.PyScript_Knob(\"matchmove\", \"<font color=salmon>Matchmove\")\n MatchBtn.setCommand('n = nuke.thisNode()\\nstab = n.knob(\"stabilize\")\\nmatch = n.knob(\"matchmove\")\\noutput = n.knob(\"output\")\\nrefFrame = n.knob(\"refFrame\").getValue()\\nif output.getValue() == 0:\\n stab.setLabel(\"<font color=salmon>Stabilize\")\\n match.setLabel(\"<font color=lime>Matchmove\")\\n to1 = n.knob(\"to1\")\\n to2 = n.knob(\"to2\")\\n to3 = n.knob(\"to3\")\\n to4 = n.knob(\"to4\")\\n from1 = n.knob(\"from1\")\\n from2 = n.knob(\"from2\")\\n from3 = n.knob(\"from3\")\\n from4 = n.knob(\"from4\")\\n to1.copyAnimations(from1.animations())\\n to2.copyAnimations(from2.animations())\\n to3.copyAnimations(from3.animations())\\n to4.copyAnimations(from4.animations())\\n from1.clearAnimated()\\n from2.clearAnimated()\\n from3.clearAnimated()\\n from4.clearAnimated()\\n from1.setValue(to1.getValueAt(refFrame))\\n from2.setValue(to2.getValueAt(refFrame))\\n from3.setValue(to3.getValueAt(refFrame))\\n from4.setValue(to4.getValueAt(refFrame))\\n output.setValue(1)')\n\n pulldownStatus = nuke.Enumeration_Knob('output', 'Output', \['Stabilized', 'Matchmoved'])\n \n intFrame = nuke.Int_Knob(\"refFrame\", \"Ref Frame\")\n intFrame.setFlag(nuke.STARTLINE)\n cpn.addKnob(tab)\n \n cpn.addKnob(setCurrentFrameBtn)\n cpn.addKnob(intFrame)\n cpn.knob(\"refFrame\").setValue(refFrame)\n \n cpn.addKnob(setFrameBtn)\n \n cpn.addKnob(StabBtn)\n cpn.addKnob(MatchBtn)\n \n cpn.addKnob(pulldownStatus)\n cpn.knob('output').setVisible(False)\n \n cpnto1.setValue(cpnfrom1.getValueAt(refFrame))\n cpnto2.setValue(cpnfrom2.getValueAt(refFrame))\n cpnto3.setValue(cpnfrom3.getValueAt(refFrame))\n cpnto4.setValue(cpnfrom4.getValueAt(refFrame))\n \n cpn\['label'].setValue('rf: \[value refFrame] dist: \{\}'.format(dist))" +STARTLINE}
addUserKnob {22 exportLinkedTrack l "<font color = violet>Export Linked CornerPin" -STARTLINE T "n = nuke.thisNode()\n\ncps = nuke.toNode(\"CornerPin2DBakedStabilize\")\nnName = str(n.name())\ncpsName = str(cps.name())\nrefFrame = int(n.knob(\"refFrame\").value())\ndist = n.knob(\"distance\").value()\n\ncpsfrom1 = cps.knob(\"from1\")\ncpsfrom2 = cps.knob(\"from2\")\ncpsfrom3 = cps.knob(\"from3\")\ncpsfrom4 = cps.knob(\"from4\")\n\nwith nuke.Root():\n posX = n.knob(\"xpos\").value()\n posY = n.knob(\"ypos\").value()\n cpn = nuke.createNode('CornerPin2D')\n cpn.setName(nName + \"_Tracker\")\n cpn.knob('xpos').setValue(posX +100)\n cpn.knob('ypos').setValue(posY +70)\n cpn.autoplace()\n cpn.setInput(0, None)\n \n cpnto1 = cpn.knob('to1')\n cpnto2 = cpn.knob('to2')\n cpnto3 = cpn.knob('to3')\n cpnto4 = cpn.knob('to4')\n \n cpnfrom1 = cpn.knob('from1')\n cpnfrom2 = cpn.knob('from2')\n cpnfrom3 = cpn.knob('from3')\n cpnfrom4 = cpn.knob('from4')\n \n cpnfrom1.setExpression(nName + \".\" + cpsName + \".\" + \"from1\")\n cpnfrom2.setExpression(nName + \".\" + cpsName + \".\" + \"from2\")\n cpnfrom3.setExpression(nName + \".\" + cpsName + \".\" + \"from3\")\n cpnfrom4.setExpression(nName + \".\" + cpsName + \".\" + \"from4\")\n \n tab = nuke.Tab_Knob('settings', 'Settings')\n \n setCurrentFrameBtn = nuke.PyScript_Knob(\"setCurrentFrame\", \"Set to Current Frame\")\n setCurrentFrameBtn.setCommand('n = nuke.thisNode()\\nrefFrame = n.knob(\"refFrame\")\\nrefFrame.setValue(nuke.frame())\\nrefFrame = refFrame.getValue()\\noutput = n.knob(\"output\")\\nto1 = n.knob(\"to1\")\\nto2 = n.knob(\"to2\")\\nto3 = n.knob(\"to3\")\\nto4 = n.knob(\"to4\")\\nfrom1 = n.knob(\"from1\")\\nfrom2 = n.knob(\"from2\")\\nfrom3 = n.knob(\"from3\")\\nfrom4 = n.knob(\"from4\")\\nif output.getValue() == 0:\\n to1.setValue(from1.getValueAt(refFrame))\\n to2.setValue(from2.getValueAt(refFrame))\\n to3.setValue(from3.getValueAt(refFrame))\\n to4.setValue(from4.getValueAt(refFrame))\\nif output.getValue() == 1:\\n from1.setValue(to1.getValueAt(refFrame))\\n from2.setValue(to2.getValueAt(refFrame))\\n from3.setValue(to3.getValueAt(refFrame))\\n from4.setValue(to4.getValueAt(refFrame))')\n \n setFrameBtn = nuke.PyScript_Knob('setFrame', 'Set Frame')\n setFrameBtn.setCommand('n = nuke.thisNode()\\nrefFrame = n.knob(\\\"refFrame\\\").getValue()\\noutput = n.knob(\\\"output\\\")\\nto1 = n.knob(\\\"to1\\\")\\nto2 = n.knob(\\\"to2\\\")\\nto3 = n.knob(\\\"to3\\\")\\nto4 = n.knob(\\\"to4\\\")\\nfrom1 = n.knob(\\\"from1\\\")\\nfrom2 = n.knob(\\\"from2\\\")\\nfrom3 = n.knob(\\\"from3\\\")\\nfrom4 = n.knob(\\\"from4\\\")\\nif output.getValue() == 0:\\n to1.setValue(from1.getValueAt(refFrame))\\n to2.setValue(from2.getValueAt(refFrame))\\n to3.setValue(from3.getValueAt(refFrame))\\n to4.setValue(from4.getValueAt(refFrame))\\nif output.getValue() == 1:\\n from1.setValue(to1.getValueAt(refFrame))\\n from2.setValue(to2.getValueAt(refFrame))\\n from3.setValue(to3.getValueAt(refFrame))\\n from4.setValue(to4.getValueAt(refFrame))')\n \n StabBtn = nuke.PyScript_Knob(\"stabilize\", \"<font color=lime>Stabilize\")\n StabBtn.setFlag(nuke.STARTLINE)\n StabBtn.setCommand('n = nuke.thisNode()\\nstab = n.knob(\"stabilize\")\\nmatch = n.knob(\"matchmove\")\\noutput = n.knob(\"output\")\\nrefFrame = n.knob(\"refFrame\").getValue()\\nif output.getValue() == 1:\\n stab.setLabel(\"<font color=lime>Stabilize\")\\n match.setLabel(\"<font color=salmon>Matchmove\")\\n to1 = n.knob(\"to1\")\\n to2 = n.knob(\"to2\")\\n to3 = n.knob(\"to3\")\\n to4 = n.knob(\"to4\")\\n from1 = n.knob(\"from1\")\\n from2 = n.knob(\"from2\")\\n from3 = n.knob(\"from3\")\\n from4 = n.knob(\"from4\")\\n from1.copyAnimations(to1.animations())\\n from2.copyAnimations(to2.animations())\\n from3.copyAnimations(to3.animations())\\n from4.copyAnimations(to4.animations())\\n to1.clearAnimated()\\n to2.clearAnimated()\\n to3.clearAnimated()\\n to4.clearAnimated()\\n to1.setValue(from1.getValueAt(refFrame))\\n to2.setValue(from2.getValueAt(refFrame))\\n to3.setValue(from3.getValueAt(refFrame))\\n to4.setValue(from4.getValueAt(refFrame))\\n output.setValue(0)')\n \n MatchBtn = nuke.PyScript_Knob(\"matchmove\", \"<font color=salmon>Matchmove\")\n MatchBtn.setCommand('n = nuke.thisNode()\\nstab = n.knob(\"stabilize\")\\nmatch = n.knob(\"matchmove\")\\noutput = n.knob(\"output\")\\nrefFrame = n.knob(\"refFrame\").getValue()\\nif output.getValue() == 0:\\n stab.setLabel(\"<font color=salmon>Stabilize\")\\n match.setLabel(\"<font color=lime>Matchmove\")\\n to1 = n.knob(\"to1\")\\n to2 = n.knob(\"to2\")\\n to3 = n.knob(\"to3\")\\n to4 = n.knob(\"to4\")\\n from1 = n.knob(\"from1\")\\n from2 = n.knob(\"from2\")\\n from3 = n.knob(\"from3\")\\n from4 = n.knob(\"from4\")\\n to1.copyAnimations(from1.animations())\\n to2.copyAnimations(from2.animations())\\n to3.copyAnimations(from3.animations())\\n to4.copyAnimations(from4.animations())\\n from1.clearAnimated()\\n from2.clearAnimated()\\n from3.clearAnimated()\\n from4.clearAnimated()\\n from1.setValue(to1.getValueAt(refFrame))\\n from2.setValue(to2.getValueAt(refFrame))\\n from3.setValue(to3.getValueAt(refFrame))\\n from4.setValue(to4.getValueAt(refFrame))\\n output.setValue(1)')\n\n pulldownStatus = nuke.Enumeration_Knob('output', 'Output', \['Stabilized', 'Matchmoved'])\n \n intFrame = nuke.Int_Knob(\"refFrame\", \"Ref Frame\")\n intFrame.setFlag(nuke.STARTLINE)\n cpn.addKnob(tab)\n \n cpn.addKnob(setCurrentFrameBtn)\n cpn.addKnob(intFrame)\n cpn.knob(\"refFrame\").setValue(refFrame)\n \n cpn.addKnob(setFrameBtn)\n \n cpn.addKnob(StabBtn)\n cpn.addKnob(MatchBtn)\n \n cpn.addKnob(pulldownStatus)\n cpn.knob('output').setVisible(False)\n \n cpnto1.setValue(cpnfrom1.getValueAt(refFrame))\n cpnto2.setValue(cpnfrom2.getValueAt(refFrame))\n cpnto3.setValue(cpnfrom3.getValueAt(refFrame))\n cpnto4.setValue(cpnfrom4.getValueAt(refFrame))\n \n cpn\['label'].setValue('rf: \[value refFrame] dist: \{\}'.format(dist))"}
addUserKnob {41 isOn +INVISIBLE T isON.isOn}
addUserKnob {7 distanceAxis l DistanceToAxis +HIDDEN R 0 1000}
distanceAxis {{AxisDistance.NoOp1.distance}}
addUserKnob {26 overscanSettings l "<b><font color=skyblue>Overscan"}
addUserKnob {7 overscan l Overscan R 0 200}
overscan 200
addUserKnob {26 mBlurSettings l "<b><font color=skyblue>MotionBlur"}
addUserKnob {7 samples +HIDDEN R 1 10}
samples 1
addUserKnob {7 motionblur}
addUserKnob {7 shutter R 0 2}
shutter 0.5
addUserKnob {41 shutteroffset l "shutter offset" T TimeBlur.shutteroffset}
}
BackdropNode {
inputs 0
name BackdropNode1
tile_color 0x57614e00
label Live
note_font_size 60
note_font_color 0xffffffff
xpos 1893
ypos 398
bdwidth 301
bdheight 350
}
BackdropNode {
inputs 0
name BackdropNode2
tile_color 0x3c472700
label Baked
note_font_size 60
note_font_color 0xffffffff
xpos 2354
ypos 382
bdwidth 300
bdheight 358
}
BackdropNode {
inputs 0
name BackdropNode3
tile_color 0x5e443cff
label Card3D
note_font_size 100
note_font_color 0xffffffff
xpos 1129
ypos -908
bdwidth 400
bdheight 1690
}
BackdropNode {
inputs 0
name BackdropNode4
tile_color 0x686b5900
label "Projection 3D setup"
note_font_size 60
note_font_color 0xffffffff
xpos -13
ypos -827
bdwidth 735
bdheight 1748
}
BackdropNode {
inputs 0
name BackdropNode5
tile_color 0x44573100
label "Corners of Cards \nfor Reconcile 3D"
note_font_size 60
note_font_color 0xffffffff
xpos 1771
ypos -1109
bdwidth 763
bdheight 1355
}
BackdropNode {
inputs 0
name BackdropNode6
tile_color 0x555f6b00
label "input cam"
note_font_size 60
note_font_color 0xffffffff
xpos 929
ypos -1247
bdwidth 267
bdheight 232
}
BackdropNode {
inputs 0
name BackdropNode8
tile_color 0x4b5a2e00
label Camera
note_font_size 60
note_font_color 0xffffffff
xpos -638
ypos -401
bdwidth 442
bdheight 1189
}
Input {
inputs 0
name Inputcam
xpos -598
ypos -300
number 1
}
set Nb50bec00 [stack 0]
Camera {
projection_mode {{"\[value the_cam]projection_mode"}}
focal {{"\[value \[value the_cam]focal]"}}
haperture {{"\[value \[value the_cam]haperture]"}}
vaperture {{"\[value \[value the_cam]vaperture]"}}
near {{"\[value \[value the_cam]near]"}}
far {{"\[value \[value the_cam]far]"}}
win_translate {{"\[lindex \[value \[value the_cam]win_translate] 0]"} {"\[lindex \[value \[value the_cam]win_translate] 1]"}}
win_scale {{"\[lindex \[value \[value the_cam]win_scale] 0]"} {"\[lindex \[value \[value the_cam]win_scale] 1]"}}
winroll {{"\[value \[value the_cam]winroll]"}}
focal_point {{"\[value \[value the_cam]focal_point]"}}
fstop {{"\[value \[value the_cam]fstop]"}}
name DummyCam
help "DummyCam by Adrian Pueyo\n\nCamera that apart from the matrices also grabs all the \"Projection\" values from the upstream camera that it's connected to. Turns into a default Camera if not Camera connected.\n\nCan also be used inside of groups and gizmos, as many levels deep as you want :D\n\nAll using live and super fast TCL.\n\nadrianpueyo.com, 2019"
onCreate "n = nuke.thisNode()\nfor k in \[\"projection_mode\",\"focal\",\"haperture\",\"vaperture\",\"near\",\"far\",\"win_translate\",\"win_scale\",\"winroll\",\"focal_point\",\"fstop\"]:\n n\[k].setFlag(0x0000000010000000)"
xpos 969
ypos -1133
addUserKnob {20 DummyCam l Defaults}
addUserKnob {43 the_cam +INVISIBLE}
the_cam "\[\nset the_knob \"focal\"\nset knob_index 0\nset starting_point \"this.input0\"\nset default \"this\"\nset default \[append default \".d_\"]\n\n# If cam has no inputs, return the default...\nif \{\[exists \$starting_point]\} \{\n set x \[node \$starting_point]\n\} \{ \n return \$default\n\}\n\nset finished 0\nwhile \{\$finished != 1\} \{\n\n # First look for a Cam or Input or topnode.\n while \{\[class \$x] != \"Camera2\" && \[class \$x] != \"Camera\" && \[class \$x] != \"Input\" && \$x != \[topnode \$x]\} \{\n set x \[node \$x.input0]\n \}\n\n # Then, check if node is a cam (and return), and otherwise, if it's an input, see if the parent exists and move to it.\n if \{\[class \$x]==\"Camera2\"||\[class \$x]==\"Camera\"\} \{\n set x \[append x \".\"]\n return \$x\n \} \{ \n if \{\[class \$x]==\"Input\"\} \{ \n set inp \"\$x.parent.input\"\n set inputNum \[value \$x.number]\n set inp \[append inp \$inputNum]\n if \{\[exists \$inp]\} \{\n set x \[node \$inp]\n \} \{ \n set finished 1\n \}\n \} \{ \n set finished 1\n \}\n \}\n\}\nreturn \$default\n]"
addUserKnob {4 d_projection_mode l projection M {perspective orthographic uv spherical ""}}
addUserKnob {7 d_focal l focal R 0 100}
d_focal 60
addUserKnob {7 d_haperture l "horiz aperture" R 0 50}
d_haperture 24.576
addUserKnob {7 d_vaperture l "vert aperture" R 0 50}
d_vaperture 18.672
addUserKnob {7 d_near l near R 0 10}
d_near 0.1
addUserKnob {7 d_far l far R 0 10000}
d_far 10000
addUserKnob {12 d_win_translate l "window translate"}
addUserKnob {12 d_win_scale l "window scale"}
d_win_scale {1 1}
addUserKnob {7 d_winroll l "window roll" R 0 45}
addUserKnob {7 d_focal_point l "focal distance" R 0 10}
d_focal_point 2
addUserKnob {7 d_fstop l fstop R 0 30}
d_fstop 16
addUserKnob {26 text l " " T "<span style=\"color:#666\"><br/><b>DummyCam v1.0</b> - <a href=\"http://www.adrianpueyo.com\" style=\"color:#666;text-decoration: none;\">adrianpueyo.com</a>, 2019</span>"}
}
Dot {
name Dot27
note_font_size 41
xpos 993
ypos -974
}
set Nb50be000 [stack 0]
Dot {
name Dot23
label cam
note_font_size 41
xpos 1317
ypos -974
}
Axis2 {
translate {0 0 {-parent.Settings.camDistance}}
name CameraDistance
label "dist to cam : \[value translate.z]"
xpos 1293
ypos -665
}
Axis2 {
uniform_scale {{(DummyCam.haperture/DummyCam.focal)*Settings.camDistance}}
name ScaleToFilmGateAxis
label "uniform Scale : \[value uniform_scale]"
xpos 1293
ypos -539
}
set Nb50bd000 [stack 0]
Axis2 {
scaling {1 {DummyCam.vaperture/parent.DummyCam.haperture} 1}
name AspectRatioScaleY
label "scale Y : \[value scaling.y]"
xpos 2131
ypos -539
}
Dot {
name Dot1
note_font_size 41
xpos 2155
ypos -419
}
set Nb3d77c00 [stack 0]
Card2 {
inputs 0
image_aspect false
rows 4
columns 4
control_points {3 3 3 6
1 {-0.5 -0.5 0} 0 {0.1666666865 0 0} 0 {0 0 0} 0 {0 0.1666666865 0} 0 {0 0 0} 0 {0 0 0}
1 {0 -0.5 0} 0 {0.1666666716 0 0} 0 {-0.1666666716 0 0} 0 {0 0.1666666865 0} 0 {0 0 0} 0 {0.5 0 0}
1 {0.5 -0.5 0} 0 {0 0 0} 0 {-0.1666666865 0 0} 0 {0 0.1666666865 0} 0 {0 0 0} 0 {1 0 0}
1 {-0.5 0 0} 0 {0.1666666865 0 0} 0 {0 0 0} 0 {0 0.1666666716 0} 0 {0 -0.1666666716 0} 0 {0 0.5 0}
1 {0 0 0} 0 {0.1666666716 0 0} 0 {-0.1666666716 0 0} 0 {0 0.1666666716 0} 0 {0 -0.1666666716 0} 0 {0.5 0.5 0}
1 {0.5 0 0} 0 {0 0 0} 0 {-0.1666666865 0 0} 0 {0 0.1666666716 0} 0 {0 -0.1666666716 0} 0 {1 0.5 0}
1 {-0.5 0.5 0} 0 {0.1666666865 0 0} 0 {0 0 0} 0 {0 0 0} 0 {0 -0.1666666865 0} 0 {0 1 0}
1 {0 0.5 0} 0 {0.1666666716 0 0} 0 {-0.1666666716 0 0} 0 {0 0 0} 0 {0 -0.1666666865 0} 0 {0.5 1 0}
1 {0.5 0.5 0} 0 {0 0 0} 0 {-0.1666666865 0 0} 0 {0 0 0} 0 {0 -0.1666666865 0} 0 {1 1 0} }
name ProjectionPlane
xpos 442
ypos -505
}
TransformGeo {
inputs 2
name AlignProjectionPlane1
xpos 442
ypos -422
}
FrameHold {
first_frame {{parent.refFrame}}
name FrameHold1
xpos 442
ypos -345
}
Dot {
name Dot10
note_font_size 41
xpos 476
ypos -62
}
set Nb3d77000 [stack 0]
Dot {
name Dot16
note_font_size 41
xpos 296
ypos -62
}
Dot {
name Dot15
note_font_size 41
xpos 296
ypos 1345
}
Input {
inputs 0
name Inputimg
xpos 849
ypos 174
}
Reformat {
format {{{parent.input0.format}}}
pbb true
name Reformat1
xpos 849
ypos 250
}
Dot {
name Dot12
label img
note_font_size 41
xpos 883
ypos 333
}
set Nb3d75800 [stack 0]
Dot {
name Dot7
label img
note_font_size 41
xpos 1686
ypos 333
}
set Nb3d75400 [stack 0]
Dot {
name Dot14
note_font_size 41
xpos 1967
ypos 334
}
set Nb3d75000 [stack 0]
Dot {
name Dot6
label img
note_font_size 41
xpos 2428
ypos 334
}
Dot {
name Dot25
note_font_size 41
xpos 2428
ypos 482
}
set Nb3d74800 [stack 0]
CornerPin2D {
to1 {{curve x1001 -5.54865037e-05 -25.63124847 -56.08604431 -71.30036163 -83.46737671 -107.9873047 -141.9923706 -175.8965149 -198.5614319 -212.4110565 -229.5443268 -260.1188354 -296.4772339 -323.2683105 -350.8457336 -391.8320313 -427.5226135 -460.9609375 -487.8473206 -516.809082 -550.3614502 -574.2913208 -580.7318115 -573.619812 -568.5501709 -577.6804199 -593.4160767 -599.3457031 -606.0302734 -621.1759033} {curve x1001 -106.6666183 -111.7852936 -132.903595 -160.347229 -179.4461365 -193.0858459 -203.8371429 -217.9276123 -236.0983124 -252.4960938 -263.7530212 -279.315155 -308.9803162 -344.8827515 -375.7203369 -407.5403442 -425.8114014 -446.0387878 -470.0732422 -490.6462708 -517.3140869 -547.6869507 -568.3490601 -572.6419678 -558.5553589 -544.7201538 -547.7642822 -551.5206299 -549.9306641 -550.4000854}}
to2 {{curve x1001 2048.000244 2041.854004 2038.14624 2049.502441 2058.58667 2053.650879 2040.704346 2031.078613 2032.462646 2039.262817 2040.22876 2031.775635 2024.435669 2025.660522 2020.821533 2006.330078 1995.567749 1987.827759 1983.789917 1976.824707 1971.432373 1976.448975 1990.057007 2004.999023 2011.498901 2009.25647 2008.615845 2012.878418 2011.836304 2003.605591} {curve x1001 -106.6665649 -113.2116241 -133.1286011 -158.5374908 -173.308197 -181.1758728 -191.9871674 -208.716507 -226.6538544 -237.8359985 -241.6056519 -246.1370392 -261.7627563 -278.9586792 -285.3890381 -292.7220764 -304.7340698 -316.7809448 -322.90271 -325.5470886 -337.2212219 -358.5812073 -376.5253906 -379.7476501 -372.2770081 -366.6139832 -373.3731384 -380.3668823 -381.1942139 -377.1599426}}
to3 {{curve x1001 2048 2045.85022 2040.311523 2044.075073 2047.341064 2040.486206 2030.7229 2024.20874 2023.778076 2025.764648 2023.633545 2012.390381 1997.47229 1985.749878 1969.335571 1945.522095 1934.691284 1925.785645 1914.758057 1902.690918 1892.562256 1891.155151 1899.316772 1911.016235 1922.891724 1930.193726 1933.19165 1938.345337 1940.33667 1934.338135} {curve x1001 1258.666626 1262.909058 1253.782349 1241.921265 1239.612061 1240.375244 1236.341431 1227.352295 1219.145752 1218.131714 1222.436035 1223.530762 1213.466187 1202.515503 1199.346924 1192.93103 1184.356079 1176.632202 1173.952881 1173.917969 1166.405273 1152.32605 1142.969116 1146.701172 1158.908203 1168.207031 1165.588135 1162.850952 1164.080688 1167.479126}}
to4 {{curve x1001 5.548650006e-05 -23.85838318 -48.07077408 -57.92486954 -69.96033478 -94.61101532 -122.5526962 -146.5423584 -161.789032 -174.4862213 -193.2120667 -223.4976349 -254.4747925 -278.5124817 -310.2148132 -350.7119141 -376.5684204 -401.5693054 -427.8048096 -457.161377 -483.9329224 -495.4501648 -493.0796814 -487.3604736 -485.4984131 -492.56073 -499.0982361 -498.6359558 -502.7892761 -518.0533447} {curve x1001 1258.666626 1270.175171 1268.425171 1254.435425 1247.434204 1249.898438 1258.049194 1263.644531 1261.701538 1258.83252 1262.259644 1267.574097 1261.832275 1246.817261 1237.488525 1232.030884 1235.847534 1238.282349 1235.361938 1236.865112 1235.203369 1225.286133 1216.171387 1215.87146 1232.246094 1255.069946 1264.222412 1266.866821 1273.8396 1283.052246}}
invert false
motionblur {{parent.motionblur}}
shutter {{parent.shutter}}
shutteroffset {{parent.shutteroffset}}
from1 {{to1(refFrame)} {to1(refFrame)}}
from2 {{to2(refFrame)} {to2(refFrame)}}
from3 {{to3(refFrame)} {to3(refFrame)}}
from4 {{to4(refFrame)} {to4(refFrame)}}
name CornerPin2DBakedMatchmove
xpos 2535
ypos 573
addUserKnob {20 User}
addUserKnob {22 "set reference frame" -STARTLINE T "import addOnCreateUU; addOnCreateUU.cornerPinZero()"}
}
push $Nb3d74800
CornerPin2D {
to1 {{from1(refFrame)} {from1(refFrame)}}
to2 {{from2(refFrame)} {from2(refFrame)}}
to3 {{from3(refFrame)} {from3(refFrame)}}
to4 {{from4(refFrame)} {from4(refFrame)}}
invert false
motionblur {{parent.motionblur}}
shutter {{parent.shutter}}
shutteroffset {{parent.shutteroffset}}
from1 {{curve x1001 -5.54865037e-05 -25.63124847 -56.08604431 -71.30036163 -83.46737671 -107.9873047 -141.9923706 -175.8965149 -198.5614319 -212.4110565 -229.5443268 -260.1188354 -296.4772339 -323.2683105 -350.8457336 -391.8320313 -427.5226135 -460.9609375 -487.8473206 -516.809082 -550.3614502 -574.2913208 -580.7318115 -573.619812 -568.5501709 -577.6804199 -593.4160767 -599.3457031 -606.0302734 -621.1759033} {curve x1001 -106.6666183 -111.7852936 -132.903595 -160.347229 -179.4461365 -193.0858459 -203.8371429 -217.9276123 -236.0983124 -252.4960938 -263.7530212 -279.315155 -308.9803162 -344.8827515 -375.7203369 -407.5403442 -425.8114014 -446.0387878 -470.0732422 -490.6462708 -517.3140869 -547.6869507 -568.3490601 -572.6419678 -558.5553589 -544.7201538 -547.7642822 -551.5206299 -549.9306641 -550.4000854}}
from2 {{curve x1001 2048.000244 2041.854004 2038.14624 2049.502441 2058.58667 2053.650879 2040.704346 2031.078613 2032.462646 2039.262817 2040.22876 2031.775635 2024.435669 2025.660522 2020.821533 2006.330078 1995.567749 1987.827759 1983.789917 1976.824707 1971.432373 1976.448975 1990.057007 2004.999023 2011.498901 2009.25647 2008.615845 2012.878418 2011.836304 2003.605591} {curve x1001 -106.6665649 -113.2116241 -133.1286011 -158.5374908 -173.308197 -181.1758728 -191.9871674 -208.716507 -226.6538544 -237.8359985 -241.6056519 -246.1370392 -261.7627563 -278.9586792 -285.3890381 -292.7220764 -304.7340698 -316.7809448 -322.90271 -325.5470886 -337.2212219 -358.5812073 -376.5253906 -379.7476501 -372.2770081 -366.6139832 -373.3731384 -380.3668823 -381.1942139 -377.1599426}}
from3 {{curve x1001 2048 2045.85022 2040.311523 2044.075073 2047.341064 2040.486206 2030.7229 2024.20874 2023.778076 2025.764648 2023.633545 2012.390381 1997.47229 1985.749878 1969.335571 1945.522095 1934.691284 1925.785645 1914.758057 1902.690918 1892.562256 1891.155151 1899.316772 1911.016235 1922.891724 1930.193726 1933.19165 1938.345337 1940.33667 1934.338135} {curve x1001 1258.666626 1262.909058 1253.782349 1241.921265 1239.612061 1240.375244 1236.341431 1227.352295 1219.145752 1218.131714 1222.436035 1223.530762 1213.466187 1202.515503 1199.346924 1192.93103 1184.356079 1176.632202 1173.952881 1173.917969 1166.405273 1152.32605 1142.969116 1146.701172 1158.908203 1168.207031 1165.588135 1162.850952 1164.080688 1167.479126}}
from4 {{curve x1001 5.548650006e-05 -23.85838318 -48.07077408 -57.92486954 -69.96033478 -94.61101532 -122.5526962 -146.5423584 -161.789032 -174.4862213 -193.2120667 -223.4976349 -254.4747925 -278.5124817 -310.2148132 -350.7119141 -376.5684204 -401.5693054 -427.8048096 -457.161377 -483.9329224 -495.4501648 -493.0796814 -487.3604736 -485.4984131 -492.56073 -499.0982361 -498.6359558 -502.7892761 -518.0533447} {curve x1001 1258.666626 1270.175171 1268.425171 1254.435425 1247.434204 1249.898438 1258.049194 1263.644531 1261.701538 1258.83252 1262.259644 1267.574097 1261.832275 1246.817261 1237.488525 1232.030884 1235.847534 1238.282349 1235.361938 1236.865112 1235.203369 1225.286133 1216.171387 1215.87146 1232.246094 1255.069946 1264.222412 1266.866821 1273.8396 1283.052246}}
name CornerPin2DBakedStabilize
xpos 2394
ypos 573
addUserKnob {20 User}
addUserKnob {22 "set reference frame" -STARTLINE T "import addOnCreateUU; addOnCreateUU.cornerPinZero()"}
}
Switch {
inputs 2
which {{output}}
name Switch7
xpos 2394
ypos 650
}
Dot {
name Dot22
note_font_size 41
xpos 2428
ypos 1281
}
push $Nb3d75000
Dot {
name Dot26
note_font_size 41
xpos 1967
ypos 498
}
set Nb2c22800 [stack 0]
CornerPin2D {
to1 {{parent.Reconcile3DBL.output} {parent.Reconcile3DBL.output}}
to2 {{parent.Reconcile3DBR.output} {parent.Reconcile3DBR.output}}
to3 {{parent.Reconcile3DTR.output} {parent.Reconcile3DTR.output}}
to4 {{parent.Reconcile3DTL.output} {parent.Reconcile3DTL.output}}
invert false
motionblur {{parent.motionblur}}
shutter {{parent.shutter}}
shutteroffset {{parent.shutteroffset}}
from1 {{to1(refFrame)} {to1(refFrame)}}
from2 {{to2(refFrame)} {to2(refFrame)}}
from3 {{to3(refFrame)} {to3(refFrame)}}
from4 {{to4(refFrame)} {to4(refFrame)}}
name CornerPin2DLiveMatchmove
xpos 2074
ypos 582
addUserKnob {20 User}
addUserKnob {22 "set reference frame" -STARTLINE T "import addOnCreateUU; addOnCreateUU.cornerPinZero()"}
}
push $Nb2c22800
CornerPin2D {
to1 {{parent.Reconcile3DBL.output(refFrame)} {parent.Reconcile3DBL.output(refFrame)}}
to2 {{parent.Reconcile3DBR.output(refFrame)} {parent.Reconcile3DBR.output(refFrame)}}
to3 {{parent.Reconcile3DTR.output(refFrame)} {parent.Reconcile3DTR.output(refFrame)}}
to4 {{parent.Reconcile3DTL.output(refFrame)} {parent.Reconcile3DTL.output(refFrame)}}
invert false
motionblur {{parent.motionblur}}
shutter {{parent.shutter}}
shutteroffset {{parent.shutteroffset}}
from1 {{parent.Reconcile3DBL.output} {parent.Reconcile3DBL.output}}
from2 {{parent.Reconcile3DBR.output} {parent.Reconcile3DBR.output}}
from3 {{parent.Reconcile3DTR.output} {parent.Reconcile3DTR.output}}
from4 {{parent.Reconcile3DTL.output} {parent.Reconcile3DTL.output}}
name CornerPin2DLiveStabilize
xpos 1933
ypos 583
addUserKnob {20 User}
addUserKnob {22 "set reference frame" -STARTLINE T "import addOnCreateUU; addOnCreateUU.cornerPinZero()"}
}
Switch {
inputs 2
which {{output}}
name Switch5
xpos 1933
ypos 644
}
Dot {
name Dot3
note_font_size 41
xpos 1967
ypos 785
}
push $Nb50bd000
Dot {
name Dot19
note_font_size 41
xpos 1317
ypos -361
}
set Nb2c20c00 [stack 0]
push $Nb2c20c00
FrameHold {
first_frame {{parent.refFrame}}
name FrameHold4
xpos 1418
ypos -293
}
Switch {
inputs 2
which {{!output}}
name Switch6
label "\[value which]"
xpos 1283
ypos -224
}
push $Nb50bec00
Dot {
name Dot18
note_font_size 41
xpos -564
ypos -54
}
set Nb2c20400 [stack 0]
Dot {
name Dot4
note_font_size 41
xpos -564
ypos 271
}
set Nb848fc00 [stack 0]
FrameHold {
first_frame {{parent.refFrame}}
name FrameHold2
xpos -454
ypos 264
}
set Nf6f7cf00 [stack 0]
Dot {
name Dot13
note_font_size 41
xpos -420
ypos 536
}
push $Nb848fc00
Dot {
name Dot11
note_font_size 41
xpos -564
ypos 442
}
set Nb848f400 [stack 0]
Switch {
inputs 2
which {{!output}}
name Switch3
label "\[value which]"
xpos -598
ypos 529
}
Dot {
name Dot8
note_font_size 41
xpos -564
ypos 629
}
set Nb848ec00 [stack 0]
push $Nb3d75800
Card3D {
inputs 3
translate {0 0 0}
format {{{parent.Reformat1.format}}}
shutter {{parent.shutter}}
shutteroffset {{parent.shutteroffset}}
name Card3D1
xpos 1283
ypos 625
}
Dot {
name Dot9
note_font_size 41
xpos 1317
ypos 725
}
push $Nb848ec00
Dot {
name Dot5
note_font_size 41
xpos -564
ypos 736
}
push $Nf6f7cf00
Dot {
name Dot24
note_font_size 41
xpos -282
ypos 271
}
push $Nb848f400
Switch {
inputs 2
which {{output}}
name Switch2
label "\[value which]"
xpos -316
ypos 435
}
push $Nb3d75800
Dot {
name Dot29
label img
note_font_size 41
xpos 626
ypos 333
}
Project3D2 {
inputs 2
crop false
name Project3D1
xpos 592
ypos 432
}
Dot {
name Dot2
note_font_size 41
xpos 626
ypos 520
}
push $Nb3d77000
ApplyMaterial {
inputs 2
name ApplyMaterial1
xpos 442
ypos 517
}
Reformat {
inputs 0
format {{{parent.input0.format}}}
resize none
pbb true
name Reformat2
xpos 591
ypos 733
}
ScanlineRender {
inputs 3
conservative_shader_sampling false
overscan {{parent.overscan}}
motion_vectors_type off
MB_channel none
name ScanlineRender1
xpos 442
ypos 733
}
TimeBlur {
divisions {{parent.samples}}
shutter {{parent.shutter}}
shutteroffset centred
shuttercustomoffset 0
name TimeBlur
xpos 442
ypos 833
disable {{"divisions == 1 ? 1 : 0"}}
}
Switch {
inputs 4
which {{"result == 2 && !\$gui == 1 ? 0 : result"}}
name Switch1
xpos 442
ypos 1277
}
Switch {
inputs 2
which 1
name Switch4
xpos 442
ypos 1342
disable true
}
Output {
name Output1
xpos 442
ypos 1423
}
push $Nb3d77c00
FrameHold {
first_frame {{parent.refFrame}}
name FrameHold3
xpos 2121
ypos -309
}
Dot {
name Dot21
note_font_size 41
xpos 2155
ypos -250
}
set Nb7d96400 [stack 0]
Axis2 {
translate {0.5 0.5 0}
name TopRight
xpos 2043
ypos -178
}
set Nb7d96000 [stack 0]
push $Nb50be000
Dot {
name Dot20
label cam
note_font_size 41
xpos 993
ypos 11
}
Dot {
name Dot17
label cam
note_font_size 41
xpos 1837
ypos 11
}
set Nb7d95400 [stack 0]
push $Nb3d75400
Reconcile3D {
inputs 3
calc_output true
output {1934.338135 1167.479126}
outputxyz {0.488941133 0.397094816 -1.439435005}
name Reconcile3DTR
xpos 2033
ypos 103
}
push $Nb7d96400
Axis2 {
translate {-0.5 -0.5 0}
name BottomLeft
xpos 2219
ypos -178
}
set Nb7d94c00 [stack 0]
push $Nb7d95400
push $Nb3d75400
Reconcile3D {
inputs 3
calc_output true
output {-621.1759033 -550.4000854}
outputxyz {-0.6424835324 -0.349278301 -1.364200354}
name Reconcile3DBL
xpos 2209
ypos 99
}
push $Nb7d96400
Axis2 {
translate {0.5 -0.5 0}
name BottomRight
xpos 2358
ypos -184
}
set Nb779bc00 [stack 0]
push $Nb7d95400
push $Nb3d75400
Reconcile3D {
inputs 3
calc_output true
output {2003.605591 -377.1599426}
outputxyz {0.4838566184 -0.3558466733 -1.448682785}
name Reconcile3DBR
xpos 2348
ypos 101
}
push $Nb7d96400
Axis2 {
translate {-0.5 0.5 0}
name TopLeft
xpos 1883
ypos -180
}
set Nb779b000 [stack 0]
push $Nb7d95400
push $Nb3d75400
Reconcile3D {
inputs 3
calc_output true
output {-518.0533447 1283.052246}
outputxyz {-0.6373990178 0.4036631882 -1.354952574}
name Reconcile3DTL
xpos 1873
ypos 99
}
push $Nb3d77000
push $Nb779bc00
push $Nb7d94c00
push $Nb7d96000
push $Nb779b000
Scene {
inputs 5
name SceneTest
xpos 2124
ypos -86
}
Input {
inputs 0
name InputAxis
xpos -382
ypos -301
number 2
}
NoOp {
name isON
xpos -382
ypos -248
addUserKnob {20 User}
addUserKnob {6 isOn +STARTLINE}
isOn {{"\[exists input2]"}}
}
push $Nb2c20400
Group {
inputs 2
name AxisDistance
tile_color 0x9c0000ff
xpos -382
ypos -57
addUserKnob {20 tab1 l TNT_AxisDistance}
addUserKnob {41 distance T NoOp1.distance}
}
Output {
inputs 0
name Output1
xpos 488
ypos 194
}
Input {
inputs 0
name axis2
xpos 740
ypos -220
number 1
}
Axis2 {
name A2
xpos 750
ypos -150
}
NoOp {
inputs 0
name NoOp1
xpos 620
ypos -70
addUserKnob {20 User}
addUserKnob {7 distance R 0 100}
distance {{sqrt((pow2(parent.A1.world_matrix.3-parent.A2.world_matrix.3))+(pow2(parent.A1.world_matrix.7-parent.A2.world_matrix.7))+(pow2(parent.A1.world_matrix.11-parent.A2.world_matrix.11)))}}
}
Input {
inputs 0
name axis1
xpos 500
ypos -220
}
Axis2 {
name A1
xpos 510
ypos -150
}
end_group
NoOp {
name Settings
xpos -382
ypos 35
addUserKnob {20 User}
addUserKnob {7 camDistance l "Camera Distance" R 0 2000}
camDistance {{"isOn == 0 ? parent.distance : AxisDistance.distance"}}
}
end_group